home *** CD-ROM | disk | FTP | other *** search
/ Merciful 1 / Merciful - Disc 1.iso / software / t / touch_stones / touchstones.dms / touchstones.adf / autoexec.AMOS / autoexec.amosSourceCode next >
AMOS Source Code  |  1990-08-11  |  7KB  |  304 lines

  1. Break Off 
  2. Dim ARRAYA(12,8)
  3. Dim ARRAYB(72)
  4. Load "df0:Empty/Music"
  5. Music 1
  6. Load "df0:Samples.Abk"
  7. Dim N(12,8)
  8. BEGGIN: Screen Open 0,353,291,32,0
  9. Screen Display 0,112,18,352,290
  10. Flash Off 
  11. Hide On 
  12. Limit Mouse 112,18 To 464,308
  13. Def Scroll 1,299,38 To 315,195,0,-1
  14. '
  15. '  
  16. Load Iff "df0:Lo-Res/TouchstonesTitle1"
  17. LP7: If Mouse Key=0 Then Goto LP7
  18. Load Iff "df0:Lo-Res/TouchstonesTitle2"
  19. LP8: If Mouse Key=0 Then Goto LP8
  20. '
  21. BEGGIN2: Fade 2 : Wait 30
  22. '
  23. Screen Close 0
  24. Screen Open 0,353,291,32,0 : Flash Off 
  25. Screen Display 0,112,320,352,290
  26. Load Iff "df0:Lo-Res/TouchstonesOptions1"
  27. For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
  28. '
  29. '
  30. LBLLBL: A$=Inkey$ : If A$="" Then Goto LBLLBL
  31. B$="1" : C$="6"
  32. If A$<B$ Then Goto LBLLBL
  33. If A$>C$ Then Goto LBLLBL
  34. PMODE=Val(A$)
  35. PLYER=1
  36. If PMODE=2 or PMODE=4 or PMODE=6 Then COMPLAY=1 Else COMPLAY=0
  37. If PMODE=2 Then PLYER=-1
  38. Fade 3 : Wait 45
  39. '  
  40. Screen Close 0
  41. Screen Open 0,353,291,32,0 : Flash Off 
  42. Screen Display 0,112,320,352,290
  43. Load Iff "df0:Lo-Res/TouchstonesOptions2"
  44. For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
  45. '
  46. '
  47. BENEK: K=Mouse Key
  48. If K=1 Then Goto LD1
  49. If K=2 Then Goto LD2
  50. Goto BENEK
  51. '
  52. LD1: Fade 3 : Wait 45 : Screen Close 0
  53. Screen Open 0,353,291,32,0 : Flash Off 
  54. Screen Display 0,112,320,352,290
  55. Load Iff "df0:Lo-Res/TouchstonesBoard1"
  56. Load "df0:Empty/Stones.abk" : Get Sprite Palette 
  57. For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
  58. Goto LD3
  59. '
  60. '
  61. LD2: Fade 3 : Wait 45 : Screen Close 0
  62. Screen Open 0,353,291,32,0 : Flash Off 
  63. Screen Display 0,112,320,352,290
  64. '
  65. Load Iff "df0:Lo-Res/TouchstonesBoard2"
  66. Def Scroll 2,1,1 To 352,290,1,0 : Scroll 2
  67. Def Scroll 2,1,1 To 352,290,0,1 : Scroll 2
  68. Def Scroll 1,298,39 To 316,195,0,-1
  69. Colour Back 0
  70. Load "df0:Empty/Stones2.abk"
  71. Get Sprite Palette 
  72. For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
  73. '  
  74. LD3: For TY=63 To 0 Step -1 : Mvolume TY : Wait Vbl : Next TY
  75. Music Off : Mvolume 63
  76. '
  77. Double Buffer 
  78. '
  79. Hide On 
  80. '
  81. Randomize Timer
  82. For A=1 To 36
  83.    ARRAYB(A)=A
  84.    ARRAYB(36+A)=A
  85. Next A
  86. For Y=1 To 12
  87. For U=1 To 8
  88. ARRAYA(Y,U)=0
  89. Next U
  90. Next Y
  91. For A=1 To 300
  92.    B=Rnd(71)+1
  93.    ABACK: C=Rnd(71)+1 : If C=B Then Goto ABACK
  94.    D=ARRAYB(B)
  95.    ARRAYB(B)=ARRAYB(C)
  96.    ARRAYB(C)=D
  97. Next A
  98. '
  99. 'Setting Up Board
  100. ARRAYA(1,1)=ARRAYB(1) : Paste Bob 1*20+20,1*20+18,ARRAYB(1)
  101. ARRAYA(12,1)=ARRAYB(2) : Paste Bob 12*20+20,38,ARRAYB(2)
  102. ARRAYA(1,8)=ARRAYB(3) : Paste Bob 40,178,ARRAYB(3)
  103. ARRAYA(12,8)=ARRAYB(4) : Paste Bob 260,178,ARRAYB(4)
  104. ARRAYA(6,4)=ARRAYB(5) : Paste Bob 140,98,ARRAYB(5)
  105. ARRAYA(7,5)=ARRAYB(6) : Paste Bob 160,118,ARRAYB(6)
  106. '
  107. LSCORE=0 : RSCORE=0
  108. PSCORE
  109. If PMODE=2 Then RMAN Else LMAN
  110. '
  111. '
  112. '
  113. '
  114. COUNT=7 : ROT=4
  115. Gosub PNEXTSTONES
  116. NEK: If COMPLAY=1 and PLYER=-1 Then Goto AUT1
  117. If Key State(69)=True Then Goto BEGGIN8
  118. K=Mouse Key : If K=1 Then Goto CHECKSQ Else Goto NEK
  119. CHECKSQ: X=X Mouse : Y=Y Mouse
  120. XP=Int((X-132)/20) : YP=Int((Y-36)/20)
  121. '  
  122. '
  123. If YP=10 Then Goto AUT1
  124. If XP<1 or XP>12 or YP<1 or YP>8 Then Goto NEK
  125. AUT2: L=XP : M=YP
  126. Gosub SCORER
  127. If TEMPSCORE=0 Then Goto NEK
  128. If ARRAYA(L,M)>0 Then Goto NEK
  129. If L=1 or L=12 or M=1 or M=8 Then TEMPSCORE=0
  130. '
  131. XPX=XP*20+132 : YPY=YP*20+36
  132. Amreg(0)=(XPX-412) : Amreg(1)=(YPY-56)
  133. Bob 9,300,38,ARRAYB(COUNT)
  134. Paste Bob 300,38,49 : Wait Vbl : Paste Bob 300,38,49
  135. A$="M RA,RB,50"
  136. Channel 9 To Bob 9
  137. Amal 9,A$
  138. Amal On 9
  139. Wait 50 : Bob Off 9
  140. Paste Bob XP*20+20,YP*20+18,ARRAYB(COUNT)
  141. Amal Off 0
  142. For V=1 To TEMPSCORE
  143. Sam Play 1 : Wait 10
  144. Next V
  145. If PLYER=1 Then LSCORE=LSCORE+TEMPSCORE
  146. If PLYER=-1 Then RSCORE=RSCORE+TEMPSCORE
  147. PSCORE
  148. If COUNT=72 Then Goto BEGGEND
  149. ARRAYA(L,M)=ARRAYB(COUNT)
  150. Inc COUNT
  151. If PMODE=3 or PMODE=4 Then PLYER=PLYER*-1
  152. If PMODE>4 and ROT=4 Then PLYER=PLYER*-1
  153. If ROT=4 Then ROT=0
  154. Inc ROT
  155. Gosub PNEXTSTONES
  156. If PLYER=1 Then LMAN Else RMAN
  157. Goto NEK
  158. '
  159. BEGGEND: Music 1
  160. If Mouse Key=0 Then Goto BEGGEND
  161. Goto BEGGIN2
  162. '
  163. '
  164. BEGGIN8: Wait 50 : Music 1 : Goto BEGGIN2
  165. '
  166. '
  167. AUT1: DI1=0
  168. If Key State(69)=True Then Goto BEGGIN8
  169. For Q=1 To 12
  170. For R=1 To 8
  171. If N(Q,R)>DI1 or(N(Q,R)=DI1 and Rnd(10)>7.8)
  172.    XP=Q : YP=R
  173.    DI1=N(Q,R)
  174.    End If 
  175. Next R
  176. Next Q
  177. Goto AUT2
  178. '
  179. '
  180. '
  181. Procedure LMAN
  182.    Bob 3,X Mouse,Y Mouse,47
  183.    C$="Loop: L X=XM-112 L Y=YM-18 Pause J Loop"
  184.    Channel 3 To Bob 3
  185.    Amal 3,C$
  186.    Amal On 
  187. End Proc
  188. '
  189. '
  190. Procedure RMAN
  191.    Bob 3,X Mouse,Y Mouse,48
  192.    C$="Loop: L X=XM-112 L Y=YM-18 Pause J Loop"
  193.    Channel 3 To Bob 3
  194.    Amal 3,C$
  195.    Amal On 
  196. End Proc
  197. '
  198. '
  199. Procedure PSCORE
  200.    Shared LSCORE,RSCORE
  201.    PS1=Int(LSCORE/100) : PSS=PS1*100 : PS2=Int((LSCORE-PSS)/10)
  202.    PST=PS2*10 : PS3=LSCORE-PSS-PST
  203.    Paste Bob 40,218,37+PS1
  204.    Paste Bob 60,218,37+PS2
  205.    Paste Bob 80,218,37+PS3
  206.    PS1=Int(RSCORE/100) : PSS=PS1*100 : PS2=Int((RSCORE-PSS)/10)
  207.    PST=PS2*10 : PS3=RSCORE-PSS-PST
  208.    Paste Bob 219,218,37+PS1
  209.    Paste Bob 239,218,37+PS2
  210.    Paste Bob 259,218,37+PS3
  211. End Proc
  212. '
  213. '
  214. PNEXTSTONES:
  215. LLL=0 : SCORENO=0
  216. LBL5: For L=1 To 12
  217.    For M=1 To 8
  218.       N(L,M)=0
  219.       If ARRAYA(L,M)=0 Then Gosub SCORER
  220. If ARRAYA(L,M)=0 and L>1 and L<12 and M>1 and M<8 Then TEMPSCORE=TEMPSCORE*8
  221.       If ARRAYA(L,M)=0 Then SCORENO=SCORENO+TEMPSCORE
  222. If ARRAYA(L,M)=0 Then N(L,M)=TEMPSCORE
  223.    Next M
  224. Next L
  225. If LLL=73 Then Goto BEGGEND
  226. If SCORENO>0 Then Goto SHUF
  227. Gosub SHUFFLE
  228. LLL=LLL+1
  229. Goto LBL5
  230. SHUF:
  231. For EGXI=1 To 20 : Scroll 1 : Next EGXI
  232. Screen Copy 0,298,56,317,57 To 0,298,176 : Wait Vbl 
  233. Screen Copy 0,298,56,317,57 To 0,298,176
  234. For A=COUNT To COUNT+7
  235.    If A>72 Then Goto BBACK
  236.    Paste Bob 300,(A-COUNT)*20+38,ARRAYB(A)
  237.    Goto CBACK
  238.    BBACK: Paste Bob 300,(A-COUNT)*20+38,49
  239. CBACK: Next A
  240. Return 
  241. '
  242. '
  243. '
  244. SCORER: TEMPSCORE=0
  245. J=ARRAYB(COUNT)
  246. If M=1 Then Goto LBL1
  247. K=ARRAYA(L,M-1)
  248. Gosub SCOREMATCH
  249. '
  250. LBL1: If M=8 Then Goto LBL2
  251. K=ARRAYA(L,M+1)
  252. Gosub SCOREMATCH
  253. '
  254. LBL2: If L=1 Then Goto LBL3
  255. K=ARRAYA(L-1,M)
  256. Gosub SCOREMATCH
  257. '
  258. LBL3: If L=12 Then Goto LBL4
  259. K=ARRAYA(L+1,M)
  260. Gosub SCOREMATCH
  261. '
  262. LBL4: If TEMPSCORE=0 Then Return 
  263. TEMPSCORE=(2^TEMPSCORE)/2
  264. '
  265. Return 
  266. '
  267. '
  268. SCOREMATCH: If K=0 Then Return 
  269. Dec J : Dec K : JJJ=Int(J/6) : KKK=Int(K/6)
  270. If JJJ=KKK Then Inc TEMPSCORE
  271. JJ=JJJ*6 : KK=KKK*6 : KKKK=K-KK+JJ
  272. If J=KKKK Then Inc TEMPSCORE
  273. If J=K Then Dec TEMPSCORE
  274. Inc J
  275. Return 
  276. '
  277. '
  278. '
  279. SHUFFLE:
  280. For EGXI=1 To 20 : Scroll 1 : Next EGXI
  281. Screen Copy 0,298,56,317,57 To 0,298,176 : Wait Vbl 
  282. Screen Copy 0,298,56,317,57 To 0,298,176
  283. GG=ARRAYB(COUNT)
  284. For HH=COUNT To 71
  285.    ARRAYB(HH)=ARRAYB(HH+1)
  286. Next HH
  287. ARRAYB(72)=GG
  288. Inc LLL
  289. A=COUNT+7
  290.    If A>72 Then Goto BBACC
  291.    Paste Bob 300,(A-COUNT)*20+38,ARRAYB(A)
  292.    Goto CBACC
  293.    BBACC: Paste Bob 299,(A-COUNT)*20+38,49
  294. CBACC: Return 
  295. '
  296. '
  297. '
  298. JERSEY: For A=COUNT To COUNT+7
  299.    If A>72 Then Goto BBACD
  300.    Paste Bob 300,(A-COUNT)*20+38,ARRAYB(A)
  301.    Goto CBACD
  302.    BBACD: Paste Bob 299,(A-COUNT)*20+38,37
  303. CBACD: Next A
  304. Return